The present invention relates to diagnosing faults in a data processing system, and more particularly, to diagnosing faults in a processor having a so-called "pipeline architecture".
In a typical data processing system, there are a significant number of electronic components and electrical interconnections between such components. It is not unusual for faults or defects to exist in at least some of the components and interconnections. Such defects affect the reliability of any processing being accomplished in the system.
There are known in the art many ways to alleviate the problems which might be caused by faults or defects. For example, strict quality assurance measures are often followed in trying to eliminate as many defective parts as is possible prior to the assembly of the system. Even so, some faults will not manifest themselves until after the system is assembled and operated. Frequently, a defect is discoverable only after the assembled system has been exercised by a test program.
Accordingly, significant efforts are often made to diagnose and correct faults or defects which may exist subsequent to the assembly of a data processing system. Generally, a test program or set of data is used in a trial run on the system and the resulting test data generated by the system is evaluated and compared, for example, with test data which is known to be good.
In a typical system, a diagnosis of the system for faults is reliable only if every line for carrying data between components in the system is checked. For example, in U.S. Pat. No. 3,771,131, issued to Andrew T. Ling, there is shown diagnostic circuitry for connection to a data processing system. The circuitry includes counters and a selection matrix for causing each test point in the data processing system to be connected to a snap or snapshot register so that when a program is run in the system, the resulting test data or signals at each test point can be stored in the snap register.
With the prevalent use of microprogramming in state-of-the-art data processing systems, it is preferable that diagnosing be accomplished by the use of diagnostic firmware or microprogramming subroutines to properly enable the snapshot registers which store the signals at selected test points. With the also prevalent use of processors having a pipeline architecture, it is also preferable that the diagnostic firmware be useable in a pipeline architecture.
One difficulty in using diagnostic firmware in a pipeline architecture is that the individual firmware commands or microinstructions that cause the "snapshot" must reach and be executed in the execute stage within the processor of the system at the exact point in time at which a snapshot is to be taken. However, if it is desired to store signals resulting from some command-under-test being processed within the system, and the desired point of time at which such signals are to be stored is the time at which the command-under-test is in the execute stage of the processor, there can be no snapshot since it is physically impossible for both the command-under-test and the snapshot command to both be in the execute stage at the same time.